package com.hspedu.abstract_;

public class AbstractDetail01 {
    public static void main(String[] args) {
        //new A();//抽象类不能被实例化

    }
}

/**
 * 抽象类不一定要包含abstract方法，抽象类可以没有abstract方法
 * 还可以由实现方法
 */
abstract class A{
    public void hi(){
        System.out.println("hi");
    }
}

//一个类有了抽象方法，这个类必须声明为抽象方法abstract
abstract class B{
    public abstract void hi();
}

class C{
    //抽象类只能修饰类或者方法，不能修饰属性
    //public abstract int n1 = 1;
}

/**抽象类的本质还是类，所以可以由类的各种成员，如：非抽象方法、构造器、静态属性等
 * 抽象不能由主体，即不能实现
 * abstract void aaa();
 *
 * 如果一个类继承了抽象类，则它必须实现抽象类的所有抽象方法，除非自己也声明为abstract
 */

abstract class D{
    public int n1 = 10;
    public static String name = "啦啦啦";
    public void hi(){
        System.out.println("hi");
    }
    public abstract void hello();

    public static void ok() {
        System.out.println("ok");
    }
}

class E extends D{


    @Override
    public void hello() {

    }
}